//Given a string s, reverse the order of characters in each word within a 
//sentence while still preserving whitespace and initial word order. 
//
// 
// Example 1: 
// Input: s = "Let's take LeetCode contest"
//Output: "s'teL ekat edoCteeL tsetnoc"
// 
// Example 2: 
// Input: s = "God Ding"
//Output: "doG gniD"
// 
// 
// Constraints: 
//
// 
// 1 <= s.length <= 5 * 10⁴ 
// s contains printable ASCII characters. 
// s does not contain any leading or trailing spaces. 
// There is at least one word in s. 
// All the words in s are separated by a single space. 
// 
//
// Related Topics 双指针 字符串 👍 484 👎 0

package leetcode.editor.cn

import java.util.LinkedList;

// Java: Reverse Words in a String III
public class ReverseWordsInAStringIii{
    public static void main(String[] args){
        Solution solution = new ReverseWordsInAStringIii().new Solution();
    }
    //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public String reverseWords(String s) {
        char[] chars = s.toCharArray();
        for (int slow = 0,quick = 0; quick <= chars.length; quick++) {
            if ( quick == chars.length || chars[quick] == ' ') {
                int q2 = quick - 1;
                while (slow < q2) {
                   char tmp = chars[slow];
                   chars[slow] = chars[q2];
                   chars[q2] = tmp;
                   slow++;
                   q2--;
                }
                slow = quick + 1;
            }
        }
        System.out.println(chars);
        return new String(chars);
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}